package me.zhengjie.modules.insurance.mapper;

import me.zhengjie.modules.insurance.domain.InsuredApply;
import me.zhengjie.modules.insurance.pojo.InsuredApplyHandlerDetailsResponse;
import me.zhengjie.modules.insurance.pojo.InsuredApplyRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface InsuredApplyMapper {
    int deleteByPrimaryKey(Long id);

    int insert(InsuredApply record);

    int insertSelective(InsuredApply record);

    InsuredApply selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(InsuredApply record);

    int updateByPrimaryKey(InsuredApply record);

    /**
     * 存在用户申请
     *
     * @param insuredUserId 被保险人的用户id
     * @param start         开始
     * @param end           结束
     * @return {@link Integer}
     */
    Integer existsUserApply(@Param("insuredUserId") long insuredUserId, @Param("start") Date start, @Param("end") Date end);

    /**
     * 存在id应用
     *
     * @param userIdCard 用户id卡
     * @param start      开始
     * @param end        结束
     * @param notId      没有身份证
     * @return {@link Integer}
     */
    Integer existsIdApply(@Param("userIdCard") String userIdCard, @Param("start") Date start, @Param("end") Date end, @Param("notId") Long notId);

    /**
     * 得到处理细节
     *
     * @param id id
     * @return {@link InsuredApplyHandlerDetailsResponse}
     */
    InsuredApplyHandlerDetailsResponse getHandlerDetails(@Param("id") long id);

    /**
     * 更新理赔员
     *
     * @param ids                id
     * @param responsibleUserId 负责用户id
     * @param currentUserId     当前用户id
     * @return int
     */
    int updateUser(@Param("ids") List<Long> ids, @Param("responsibleUserId") long responsibleUserId, @Param("currentUserId") long currentUserId);


    /**
     * 提交资料完毕（如果是客服待处理，改为待处理）
     *
     * @param ids id
     * @return int
     */
    int submitOver(List<Long> ids);

    /**
     * 获取进度
     *
     * @param id id
     * @return {@link Integer}
     */
    Integer getSpeek(long id);

    /**
     * 手机号码匹配
     *
     * @param mobile 移动
     * @param start  开始
     * @param end    结束
     * @return {@link InsuredApply}
     */
    InsuredApply mobileMatching(@Param("mobile") String mobile, @Param("start") Date start, @Param("end") Date end);
}